unit BaseContacto;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Base, StdCtrls, Buttons, XPMan, ComCtrls,CustomMsgBox, Grids,
  DBGrids, ToolWin, ExtCtrls;

type
  TTelefonoContacto = class(TObject)
    codigo:integer;
    telefono:string;
    interno:string;
    edicion:integer;
    valorAuxiliar:integer;
  end;

  TCliente = class(TObject)
    codigo:integer;
    nombre:string;
    apellido:string;
  end;
  
  TfrmBaseContactos = class(TfrmBase)
    GroupBox1: TGroupBox;
    btnAceptar: TBitBtn;
    btnCancelar: TBitBtn;
    edtCodContacto: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    edtNombre: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    edtApellido: TEdit;
    edtCodProvincia: TEdit;
    edtCodLocalidad: TEdit;
    edtEmail: TEdit;
    Label7: TLabel;
    cmbProvincia: TComboBox;
    cmbLocalidad: TComboBox;
    lblErrorNombre: TLabel;
    lblErrorCodigo: TLabel;
    lblErrorApellido: TLabel;
    lblErrorProvincia: TLabel;
    lblErrorLocalidad: TLabel;
    edtObservaciones: TMemo;
    procedure ListaLocalidad(codProvincia:integer);
    procedure ListaProvincia();
    procedure BorraEdit();
    procedure cmbProvinciaChange(Sender: TObject);
    procedure cmbLocalidadChange(Sender: TObject);
    procedure btnCancelarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmBaseContactos: TfrmBaseContactos;

implementation

uses Datos;

{$R *.dfm}

procedure TfrmBaseContactos.ListaLocalidad(codProvincia: integer);
var objeto:TLocalidad;
begin
  frmDatos.tblLocalidades.Active:=true;
  cmbLocalidad.Clear;
  frmDatos.tblLocalidades.First;
  while not frmDatos.tblLocalidades.Eof do
    begin
      if frmDatos.tblLocalidades['cod_provincia'] = codProvincia then
        begin
          objeto:=TLocalidad.Create;
          objeto.codigoProvincia:=frmDatos.tblLocalidades['cod_provincia'];
          objeto.codigo:= frmDatos.tblLocalidades['cod_localidad'];
          objeto.descripcion :=frmDatos.tblLocalidades['descripcion_localidad'];
          cmbLocalidad.Items.AddObject(objeto.descripcion,objeto);
        end;
      frmDatos.tblLocalidades.Next;
    end;
  frmDatos.tblLocalidades.Active:=false;
end;

procedure TfrmBaseContactos.ListaProvincia;
var objeto:TProvincia;
begin
  frmDatos.tblProvincia.Active:=true;
  cmbProvincia.Clear;
  frmDatos.tblProvincia.First;
  while not frmDatos.tblProvincia.Eof do
    begin
      objeto:=TProvincia.Create;
      objeto.codigo:=frmDatos.tblProvincia['cod_provincia'];
      objeto.descripcion :=frmDatos.tblProvincia['descripcion_provincia'];
      cmbProvincia.Items.AddObject(objeto.descripcion,objeto);
      frmDatos.tblProvincia.Next;
    end;
  frmDatos.tblProvincia.Active:=false;
end;

procedure TfrmBaseContactos.BorraEdit;
begin
  LimpiarForm;
  cmbProvincia.ItemIndex:=-1;
  cmbLocalidad.ItemIndex:=-1;
  cmbProvincia.Text:='';
  cmbLocalidad.Text:='';

  lblErrorNombre.Visible:=false;
  lblErrorCodigo.Visible:=false;
  lblErrorApellido.Visible:=false;
  lblErrorProvincia.Visible:=false;
  lblErrorLocalidad.Visible:=false;
end;

procedure TfrmBaseContactos.cmbProvinciaChange(Sender: TObject);
var objetoRecuperar:TProvincia;
    indice:integer;
begin
  inherited;
  indice:=cmbProvincia.ItemIndex;
  objetoRecuperar:=TProvincia(cmbProvincia.Items.Objects[indice]);
  edtCodProvincia.Text := IntToStr(objetoRecuperar.codigo);
  edtCodLocalidad.Text:='';
  ListaLocalidad(objetoRecuperar.codigo);
end;

procedure TfrmBaseContactos.cmbLocalidadChange(Sender: TObject);
var indice:integer;
    objetoRecuperar:TLocalidad;
begin
  inherited;
  indice:=cmbLocalidad.ItemIndex;
  objetoRecuperar:=TLocalidad(cmbLocalidad.Items.Objects[indice]);
  edtCodLocalidad.Text:=IntToStr(objetoRecuperar.codigo);
end;

procedure TfrmBaseContactos.btnCancelarClick(Sender: TObject);
begin
  inherited;
  Close;
end;

end.
